# 导入Django的静态文件存储工具，用于轻松访问和管理项目中的静态资源
from django.contrib.staticfiles.storage import staticfiles_storage

# 导入Django的URL反转功能，允许通过视图名称生成对应的URL路径
from django.urls import reverse

# 导入Jinja2模板引擎的环境类，用于配置和加载Jinja2模板
from jinja2 import Environment


def environment(**options):
    """
    创建并配置Jinja2环境。
    此函数主要负责初始化Jinja2的环境，并向环境全局变量中添加Django相关的实用函数，
    以便在模板中使用。这些实用函数包括静态文件路径的获取和URL的反转。

    参数:
    **options: 接受任意关键字参数，通常用于传递Jinja2环境的配置选项。

    返回值:
    返回一个配置好的Jinja2环境实例。
    """
    # 初始化Jinja2环境
    env = Environment(**options)

    # 向环境全局变量中添加Django静态文件路径获取函数
    # 这允许在模板中使用 `{% static ... %}` 来引用静态文件
    # 和 `{% url ... %}` 来引用命名的URL
    env.globals.update(
        {
            'static': staticfiles_storage.url,
            'url': reverse
        }
    )

    # 返回配置好的Jinja2环境实例
    return env
